// API 封装
import * as api from "./index.js";

function request({
  url = "",
  data = {},
  method = "POST",
  dataType = "json",
  header = {},
  successCb = null, // 成功回调
  failCb = null, // 失败回调
} = {}) {
  uni.request({
    //请求路径
    url: api.BASE_URL + url,
    // 参数
    data,
    // 请求方式
    method,
    // 超时时间
    timeout: 30000,
    // 一般直接写dataType:‘json’，
    dataType,
    // 设置请求头 
    header: {
      token: uni.getStorageSync("token") || "",
      ...header
    },
    success: (res) => {
      //  可以根据自己需求  根据 code 进行拦截
      if (res.data.code === 0) {
        // 需要成功回调时才调用
        successCb && successCb(res.data);
      } else {
        // 请求成功  业务失败
        uni.showToast({
          title: res.data.message,
          icon: "none",
          duration: 2000,
        });
        if (res.data.message === '您尚未登录，请先进行登录' || res.data.message === 'token已过期') {
          setTimeout(function() {
            uni.navigateTo({
              url: '../../pages/login/login'
            });
          }, 1000); // 延迟1秒执行跳转
        }
        if (res.data.message === '次数卡不足') {
          setTimeout(function() {
            uni.navigateTo({
              url: '../../pages/member/member'
            });
          }, 1000); // 延迟1秒执行跳转}
        }
      }
    },
    // 请求失败
    fail(err) {
      console.log('fail', err);
      uni.showToast({
        title: "请求失败",
        icon: "none",
        duration: 2000,
      });
      //   需要失败回调时才调用
      failCb && failCb();
    },
  });
}
// 导出 request
export default request;